import { defineStore } from 'pinia'

const useTodosStore = defineStore('todos', {
  state: () => {
    return {
      list: JSON.parse(localStorage.getItem('todoList')) || [],
      //   list: [
      //     {
      //       id: 1,
      //       name: '吃饭',
      //       done: false,
      //     },
      //     {
      //       id: 2,
      //       name: '睡觉',
      //       done: true,
      //     },
      //     {
      //       id: 3,
      //       name: '打豆豆',
      //       done: false,
      //     },
      //   ],

      type: 'all',
    }
  },

  actions: {
    // 改变input的值
    changeDone(id) {
      const todo = this.list.find((item) => item.id === id)
      todo.done = !todo.done
      //   console.log(todo)
    },

    // 删除一个todo
    handleDel(id) {
      this.list = this.list.filter((item) => item.id !== id)
    },

    // 添加一个todo
    addTodo(name) {
      this.list.unshift({
        id: Date.now(),
        name,
        done: false,
      })
    },

    // 全选
    checkoutAll(flag) {
      //   console.log(flag)
      this.list.forEach((item) => (item.done = flag))
    },

    // 清除所有已完成的todo
    handleClear() {
      this.list = this.list.filter((item) => !item.done)
    },

    // 选择的类型
    changeType(flag) {
      console.log(flag)
      this.type = flag
    },
  },

  getters: {
    // 下面的全部选中 上面的也能背选中
    isCheckAll() {
      return this.list.every((item) => item.done)
    },

    // 计算leftCount
    leftCount() {
      return this.getListByType.filter((item) => !item.done).length
    },

    // 判断清空按钮是否可用
    isclearable() {
      return this.list.some((item) => item.done)
    },

    // 根据type返回list
    getListByType() {
      switch (this.type) {
        case 'all':
          return this.list
        case 'active':
          return this.list.filter((item) => !item.done)
        case 'completed':
          return this.list.filter((item) => item.done)
      }
    },
  },
})

export default useTodosStore
